package utils

import (
	"errors"
	"github.com/patrickmn/go-cache"
	"k8s-admin/dao/kubernetes"
	"k8s-admin/global"
)

func InitAllClient() error {
	//从数据库中查询已存在的集群信息
	global.ClientSetCache.Flush()                                      // 清空缓存
	clusters, err := kubernetes.NewK8sCluster().ActiveK8sClusterList() // 查询数据库中的所有集群信息
	if err != nil {
		global.TPLogger.Error("获取k8s集群列表失败：", err)
		return errors.New("获取k8s集群列表失败")
	}
	for _, cluster := range clusters {
		configStr := cluster.Text
		cid := cluster.CID
		decodeConfig, _ := DecodeBase64(configStr)
		go func() {
			clientSet, err := global.NewClientInterface().NewClientSet(decodeConfig)
			if err != nil {
				global.TPLogger.Error("初始化clientSet失败：", err)
				err = kubernetes.NewK8sCluster().UpdateK8sCluster(cid, 1)
				if err != nil {
					global.TPLogger.Error("数据库集群状态更新失败：", err.Error())
				}
			} else {
				err = kubernetes.NewK8sCluster().UpdateK8sCluster(cid, 1)
				if err != nil {
					global.TPLogger.Error("数据库集群状态更新失败：", err.Error())
				}
				// 设置缓存
				global.ClientSetCache.Set(cid, clientSet, cache.NoExpiration)

			}
		}()
	}
	return nil
}
